The present application relates to computing and more specifically to software and associated systems and methods for facilitating software client access to messages generated in a networked computing environment.
Software for facilitating sharing of information via messages in a networked computing environment is employed in various demanding applications, including task scheduling systems for concurrent computing applications, event message sharing and file updating and synchronization activities for collaborative file sharing systems, network analytics software for analyzing and monitoring network characteristics and performance, Quality of Service (QoS) management systems for networked software applications, and so on.
Such applications often demand efficient mechanisms and methods for handling and tracking many messages and associated events occurring in the networked computing environments; preserving and enabling convenient access to and use of messages during server cluster and/or data center problems or outages (e.g., failover mechanisms); enabling delivery of messages to and from disparate computing systems and environments; enabling rapid scalability of data storage and access mechanisms to accommodate growing computing environments, and so on.
Efficient and cost effective mechanisms for sharing information in networked computing environments are particularly important in cloud-based file collaboration systems, including blogs, wikis, social networks, cloud storage accounts, and so on. Such systems may involve, for example, participation of multiple enterprises and thousands of users accessing collaborative workspaces (each of which may pertain to different collaborations) using client devices and accompanying software to exchange potentially millions of messages per day.
Conventionally, such file collaboration systems may use relational databases and accompanying database management systems to collect and selectively distribute messages among collaborators and associated client devices and systems. However, such collaboration databases are often inefficient at allowing access to message content from disparate computing systems and environments and exhibit relatively inefficient scalability. Software developers must often develop custom code to interface with such systems. Such potentially costly custom code development may require detailed knowledge of the databases and associated interfaces.
Alternatively or in addition, message queues, such as Apache Kafka, are employed to collect and selectively disperse copies of messages generated in the computing environments. However, implementing systems to interface with such message queues can be time consuming and costly, as software developers must often code detailed interface mechanisms for handling message flows, tracking client positions in the queues, including message offset management, and so on.
In general, existing systems and methods for enabling software components to access and publish messages to a shared repository or message queue provide relatively ineffective mechanisms for adding new clients, accommodating access by disparate systems, enabling rapid horizontal scalability, and efficiently handling outages of component computing systems.